home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / strlib.zip / STRCTRIM.C < prev    next >
Text File  |  1993-01-04  |  1KB  |  46 lines

  1.  
  2. /*  File   : strctrim.c
  3.     Author : Richard A. O'Keefe.
  4.     Updated: 20 April 1984
  5.     Defines: strctrim()
  6.  
  7.     strctrim(dst, src, set, ends)
  8.     copies src to dst, but will skip leading characters not in set if
  9.     ends <= 0 and will skip trailing characters not in set if ends >= 0.
  10.     Thus there are three cases:
  11.         ends < 0 :      trim a prefix
  12.         ends = 0 :      trim a prefix and a suffix both
  13.         ends > 0 :      trim a suffix
  14.     This is to strtrim as strcspn is to strspn.
  15. */
  16.  
  17. #include "strings.h"
  18. #include "_str2set.h"
  19.  
  20. char *strctrim(dst, src, set, ends)
  21.     register char *dst, *src;
  22.     char *set;
  23.     int ends;
  24.     {
  25.         _str2set(set);
  26.         if (ends <= 0) {
  27.             register int chr;
  28.             while ((chr = *src++) && _set_vec[chr] != _set_ctr) ;
  29.             --src;
  30.         }
  31.         if (ends >= 0) {
  32.             register int chr;
  33.             register char *save = dst;
  34.             while (chr = *src++) {
  35.                 *dst++ = chr;
  36.                 if (_set_vec[chr] == _set_ctr) save = dst;
  37.             }
  38.             dst = save, *dst = NUL;
  39.         } else {
  40.             while (*dst++ = *src++) ;
  41.             --dst;
  42.         }
  43.         return dst;
  44.     }
  45.  
  46.